﻿/////////////////////////////////////////////////////////////////////////////////
///              ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO                   ///
///                        PROYECTO INTEGRADOR IV                             /// 
///                         PROYECTO SICOPS 2011                              /// 
/// ------------------------------------------------------------------------- ///  
///              **********GRUPO DE DESARROLLADORES**********                 ///
///                    ************PEGASO*************                        /// 
///---------------------------------------------------------------------------///
///                                                         RIOBAMBA-ECUADOR  ///
///---------------------------------------------------------------------------///
///          CLASE DE LA ADMINISTRACION PARA LA TABLA PRODUCTO                ///
/////////////////////////////////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.Data.Common;
using System.Drawing;
//Clase para la administracion de productos
namespace LogisticaDeAcceso.ClasesDeAcceso
{
    public class clsProducto
    {
        private SqlCommand SqlProSeleccionar;
        private SqlConnection SqlProConexion;
        private SqlDataAdapter SqlProAdaptador;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// //metodo para la configuracion del procedimiento de ingreso de los
        public void metConfigurarIngresoPR(string Conexion)
        {
            
            //productos
            this.SqlProSeleccionar = new SqlCommand();
            this.SqlProConexion = new SqlConnection();
            this.SqlProAdaptador = new SqlDataAdapter();
            // 
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_IngresarProducto";
            this.SqlProSeleccionar.CommandType = CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            //Configuracion de los parametro del procedimiento
            this.SqlProSeleccionar.Parameters.AddRange(new SqlParameter[] {
            new SqlParameter("@RETURN_VALUE", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", DataRowVersion.Current, null),
            new SqlParameter("@Codigo", SqlDbType.VarChar, 21),
            new SqlParameter("@Detalle", SqlDbType.VarChar, 50),
            new SqlParameter("@Grupo", SqlDbType.VarChar, 50),
            new SqlParameter("@Tipo", SqlDbType.VarChar, 40)});
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
           
        }
        //Ejecucion de la configuracion
        public string metActivarIngresoPR(string Cod,string Det,string Gru,string Tip)
        {
            //metodo de activacion del procedimiento 
            //este metodo ayuda al control de las claves duplicadas
            
            string Cont = "";
            SqlProAdaptador.SelectCommand.Parameters["@Codigo"].Value = Cod;//Codigo Producto
            SqlProAdaptador.SelectCommand.Parameters["@Detalle"].Value = Det;//Detalle producto
            SqlProAdaptador.SelectCommand.Parameters["@Grupo"].Value = Gru;//Grupo al que pertenece
            SqlProAdaptador.SelectCommand.Parameters["@Tipo"].Value = Tip;//Tipo bien, suminitro1, suministro2
            SqlProConexion.Open();//Abrir la coneccion
            try
            {
                SqlProAdaptador.SelectCommand.ExecuteNonQuery();//Ejecuta el procedmiento almacenado
            }
            catch (SystemException M)
            {
                if (M.Message == "Codigo ya asignado")//Si este metodo va por aqui se se asigna otra clave
                    Cont = M.Message;
                else
                     MessageBox.Show(M.Message);
            }
            SqlProConexion.Close();//Es importante cerrar la coneccion para evitar embotellamientos
            return Cont;
        }

        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Configurar conteo de filas
        public void metConfigurarContarPR(string Conexion)
        {
            this.SqlProSeleccionar = new SqlCommand();
            this.SqlProConexion = new SqlConnection();
            this.SqlProAdaptador = new SqlDataAdapter();
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_ContarProductos";
            this.SqlProSeleccionar.CommandType = CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            this.SqlProSeleccionar.Parameters.AddRange(new SqlParameter[] {
            new SqlParameter("@RETURN_VALUE", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", DataRowVersion.Current, null),
            new SqlParameter("@Grupo", SqlDbType.VarChar, 40),
            new SqlParameter("@Numero", SqlDbType.Int, 4, ParameterDirection.InputOutput, false, ((byte)(0)), ((byte)(0)), "", DataRowVersion.Current, null)});
            //          
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecucion ed la configuracion
        public int metActivarContarPR(string Grupo)
        {
            int Conteo = -1;
            SqlProAdaptador.SelectCommand.Parameters["@Grupo"].Value = Grupo;
            SqlProAdaptador.SelectCommand.Parameters["@Numero"].Value = 0;
            SqlProConexion.Open();//Abrir la coneccion         
                SqlProAdaptador.SelectCommand.ExecuteNonQuery();//Ejecuta el procedmiento almacenado         
            SqlProConexion.Close();
            Conteo= (int)(SqlProAdaptador.SelectCommand.Parameters["@Numero"].Value);
            return Conteo;
        }
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Configuracion para el control de acceso de la claves
        public void metConfigurarGetExisteClave(string Conexion)
        {
            //metodo que verifica si existe registrada una clave 
            //aqui se configura el procedimiento almacenado que realiza esta operacion
            this.SqlProSeleccionar = new SqlCommand();
            this.SqlProConexion = new SqlConnection();
            this.SqlProAdaptador = new SqlDataAdapter();
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_GetExisteClave";
            this.SqlProSeleccionar.CommandType = CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            this.SqlProSeleccionar.Parameters.AddRange(new SqlParameter[] {
            new SqlParameter("@RETURN_VALUE", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", DataRowVersion.Current, null),
            new SqlParameter("@Clave", SqlDbType.VarChar, 21)});
            // 
         
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecucion de la configuracion
        public string metActivarGetexisteClave(string Clave)
        {
            string P = "NO";//Determinado como por defecto que no existe esa clave registrada
            
            SqlProAdaptador.SelectCommand.Parameters["@Clave"].Value = Clave;
            SqlProConexion.Open();//Abrir la coneccion 
            try
            {
                SqlProAdaptador.SelectCommand.ExecuteNonQuery();//Ejecuta el procedmiento almacenado         
            }
            catch (Exception M)
            {
                P = M.Message.ToString();//La respuesta biene en forma de mensaje desde el motor de la base de datos
            }
            SqlProConexion.Close();
            return P;
        }
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Configuracion de datos por grupo
        public void metConfigurarDatosPorGru(string Conexion)
        {
            this.SqlProSeleccionar = new SqlCommand();
            this.SqlProConexion = new SqlConnection();
            this.SqlProAdaptador = new SqlDataAdapter();
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_MostrarBienesPorGrupo";
            this.SqlProSeleccionar.CommandType = CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            this.SqlProSeleccionar.Parameters.AddRange(new SqlParameter[] {
            new SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", DataRowVersion.Current, null),
            new SqlParameter("@Grupo",SqlDbType.VarChar, 60)});
            // 
        
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecucion
        public void metActivaDatosPorGrupo(string Grupo,ColeccionDeDatos Col)
        {
            SqlProAdaptador.SelectCommand.Parameters["@Grupo"].Value = Grupo;
            SqlProAdaptador.Fill(Col.sp_MostrarBienesPorGrupo);
        }

        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Configuracion para presntar bienes
        public void metConfiguracionMostarBienes(string Conexion)
        {
            this.SqlProSeleccionar = new System.Data.SqlClient.SqlCommand();
            this.SqlProConexion = new System.Data.SqlClient.SqlConnection();
            this.SqlProAdaptador = new System.Data.SqlClient.SqlDataAdapter();
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "SELECT        vs_MostrarProductos.*\r\nFROM            vs_MostrarProductos";
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            // 
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            this.SqlProConexion.FireInfoMessageEventOnUserErrors = false;
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecucion de configuracion
        public void metActivarMostrarBienes(ColeccionDeDatos Col)
        {
            SqlProAdaptador.Fill(Col.vs_MostrarProductos);
        }
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Actualizar detos del producto relacionado 
        public void metActualizarProducto(string Conexion)
        {
            this.SqlProSeleccionar = new System.Data.SqlClient.SqlCommand();
            this.SqlProConexion = new System.Data.SqlClient.SqlConnection();
            this.SqlProAdaptador = new System.Data.SqlClient.SqlDataAdapter();
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_ActualizarProducto";
            this.SqlProSeleccionar.CommandType = System.Data.CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            this.SqlProSeleccionar.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
            new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", System.Data.DataRowVersion.Current, null),
            new System.Data.SqlClient.SqlParameter("@CodigoP", System.Data.SqlDbType.VarChar, 25),
            new System.Data.SqlClient.SqlParameter("@Detalle", System.Data.SqlDbType.VarChar, 60),
            new System.Data.SqlClient.SqlParameter("@Tip", System.Data.SqlDbType.VarChar, 30)});
            // 
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecutar la configuracion
        public void metActivarActualizarProducto(string CodigoP, string Detalle, string Tip)
        {
            SqlProAdaptador.SelectCommand.Parameters["@CodigoP"].Value = CodigoP;
            SqlProAdaptador.SelectCommand.Parameters["@Detalle"].Value = Detalle;
            SqlProAdaptador.SelectCommand.Parameters["@Tip"].Value = Tip;
            SqlProConexion.Open();//Abrir la coneccion 
            try
            {
                SqlProAdaptador.SelectCommand.ExecuteNonQuery();//Ejecuta el procedmiento almacenado         
            }
            catch (Exception M)
            {
                MessageBox.Show( M.Message.ToString());//La respuesta biene en forma de mensaje desde el motor de la base de datos
            }
            SqlProConexion.Close();
        }
        /// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //Configuracion de la eliminacion de productos
        public void metConfigurarEliminarProducto(string Conexion)
        {
            this.SqlProSeleccionar = new System.Data.SqlClient.SqlCommand();
            this.SqlProConexion = new System.Data.SqlClient.SqlConnection();
            this.SqlProAdaptador = new System.Data.SqlClient.SqlDataAdapter();
            // 
            // SqlProSeleccionar
            // 
            this.SqlProSeleccionar.CommandText = "dbo.sp_EliminarProducto";
            this.SqlProSeleccionar.CommandType = System.Data.CommandType.StoredProcedure;
            this.SqlProSeleccionar.Connection = this.SqlProConexion;
            this.SqlProSeleccionar.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
            new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((byte)(0)), ((byte)(0)), "", System.Data.DataRowVersion.Current, null),
            new System.Data.SqlClient.SqlParameter("@Codigo", System.Data.SqlDbType.VarChar, 30)});
            // 
            // SqlProConexion
            // 
            this.SqlProConexion.ConnectionString = Conexion;
            // 
            // SqlProAdaptador
            // 
            this.SqlProAdaptador.SelectCommand = this.SqlProSeleccionar;
        }
        //Ejecucion de la configuracion de eliminar productos
        public void metActivarEliminarProducto(string Codigo)
        {
            SqlProAdaptador.SelectCommand.Parameters["@Codigo"].Value = Codigo;
            SqlProConexion.Open();//Abrir la coneccion 
            try
            {
                SqlProAdaptador.SelectCommand.ExecuteNonQuery();//Ejecuta el procedmiento almacenado         
            }
            catch (Exception M)
            {
                MessageBox.Show(M.Message.ToString());//La respuesta biene en forma en forma de mensaje desde el motor de la base de datos
            }
            SqlProConexion.Close();
        }
    }
}
